home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_xemacs.idb / usr / freeware / lib / xemacs-20.4 / lisp / skk / skk-viper.el.z / skk-viper.el
Encoding:
Text File  |  1998-05-21  |  6.5 KB  |  189 lines

  1. ;;; skk-viper.el --- SKK related code for Viper
  2. ;; Copyright (C) 1996, 1997
  3. ;; Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>, Murata Shuuichirou <mrt@mickey.ai.kyutech.ac.jp>
  4. ;;
  5. ;; Author: Masahiko Sato <masahiko@kuis.kyoto-u.ac.jp>,
  6. ;;         Murata Shuuichirou <mrt@mickey.ai.kyutech.ac.jp>
  7. ;; Maintainer: Murata Shuuichirou <mrt@mickey.ai.kyutech.ac.jp>
  8. ;;             Mikio Nakajima <minakaji@osaka.email.ne.jp>
  9. ;; Version: $Id: skk-viper.el,v 1.4 1997/10/25 11:02:17 mrt Exp $
  10. ;; Keywords: japanese
  11. ;; Last Modified: $Date: 1997/10/25 11:02:17 $
  12.  
  13. ;; This program is free software; you can redistribute it and/or modify
  14. ;; it under the terms of the GNU General Public License as published by
  15. ;; the Free Software Foundation; either versions 2, or (at your option)
  16. ;; any later version.
  17.  
  18. ;; This program is distributed in the hope that it will be useful
  19. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21. ;; GNU General Public License for more details.
  22.  
  23. ;; You should have received a copy of the GNU General Public License
  24. ;; along with SKK, see the file COPYING.  If not, write to the Free
  25. ;; Software Foundation Inc., 59 Temple Place - Suite 330, Boston,
  26. ;; MA 02111-1307, USA.
  27.  
  28. ;;; Commentary:
  29.  
  30. ;; Following people contributed modifications to skk.el (Alphabetical order):
  31. ;;      Mikio Nakajima <minakaji@osaka.email.ne.jp>
  32. ;;      Murata Shuuichirou <mrt@mickey.ai.kyutech.ac.jp>
  33.  
  34. ;;; Change log:
  35.  
  36. ;;; Code:
  37. (require 'skk-foreword)
  38. (require 'skk-vars)
  39. (require 'advice)
  40. (require 'viper)
  41.  
  42. (setq skk-use-viper t)
  43.  
  44. ;;;###skk-autoload
  45. (defvar skk-viper-normalize-map-function nil
  46.   "Viper $B$,(B minor-mode-map-alist $B$rD4@0$9$k$?$a$N4X?t!#(B" )
  47.  
  48. (defvar skk-viper-or-vip 
  49.   (if (fboundp 'viper-normalize-minor-mode-map-alist)
  50.       'viper
  51.     'vip ))
  52.  
  53. (let ((other-buffer
  54.        (if skk-xemacs
  55.            (local-variable-p 'minor-mode-map-alist nil t)
  56.          (local-variable-p 'minor-mode-map-alist) )))
  57.   (require 'viper)
  58.   ;; for current buffer and buffers to be created in the future.
  59.   ;; substantially the same job as vip-harness-minor-mode does.
  60.   (setq skk-viper-normalize-map-function
  61.     (if (eq skk-viper-or-vip 'viper)
  62.         'viper-normalize-minor-mode-map-alist
  63.       'vip-normalize-minor-mode-map-alist ))
  64.   (funcall skk-viper-normalize-map-function)
  65.   (setq-default minor-mode-map-alist minor-mode-map-alist)
  66.   (if (not other-buffer)
  67.       nil
  68.     ;; for buffers which are already created and have the minor-mode-map-alist
  69.     ;; localized by Viper.
  70.     (save-current-buffer
  71.       (let ((buf (buffer-list)))
  72.         (while buf
  73.           (set-buffer (car buf))
  74.           (if (null (assq 'skk-j-mode minor-mode-map-alist))
  75.               (progn
  76.                 (setq minor-mode-map-alist
  77.                       (nconc
  78.                        (list
  79.                         (cons 'skk-abbrev-mode skk-abbrev-mode-map)
  80.                         (cons 'skk-ascii-mode skk-ascii-mode-map)
  81.                         (cons 'skk-j-mode skk-j-mode-map)
  82.                         (cons 'skk-zenkaku-mode skk-zenkaku-mode-map) )
  83.                        minor-mode-map-alist ))
  84.                 (funcall skk-viper-normalize-map-function) ))
  85.           (setq buf (cdr buf)) )))))
  86.  
  87. (setq sentence-end (concat "[$B!#!)!*(B]\\|" sentence-end))
  88.  
  89. (defsubst skk-looking-at-jisx0208 (char)
  90.   (eq 'japanese-jisx0208 (car (find-charset-string (char-to-string char)))) )
  91.  
  92. (defmacro skk-viper-advice-select (viper vip arg body)
  93.   (` (if (eq skk-viper-or-vip 'viper)
  94.      (defadvice (, viper) (, arg) (,@ body))
  95.        (defadvice (, vip) (, arg) (,@ body)) )))
  96.        
  97. (skk-viper-advice-select
  98.  viper-forward-word-kernel vip-forward-word-kernel
  99.  (around skk-ad activate)
  100.  ((if skk-mode 
  101.       (let ((enable-multibyte-characters t))
  102.         (forward-word val) )
  103.     ad-do-it )))
  104.  
  105. (skk-viper-advice-select
  106.  viper-backward-word-kernel vip-backward-word-kernel
  107.  (around skk-ad activate)
  108.  ((if skk-mode
  109.       (let ((enable-multibyte-characters t))
  110.         (backward-word val) )
  111.     ad-do-it )))
  112.  
  113. (skk-viper-advice-select
  114.  viper-del-backward-char-in-insert vip-del-backward-char-in-insert
  115.  (around skk-ad activate)
  116.  ((cond ((and skk-henkan-on (>= skk-henkan-start-point (point)))
  117.          (setq skk-henkan-count 0)
  118.          (skk-kakutei) )
  119.         (skk-henkan-active
  120.          (if (and (not skk-delete-implies-kakutei)
  121.                   (= skk-henkan-end-point (point)) )
  122.              (skk-previous-candidate)
  123.            (if skk-use-face (skk-henkan-face-off))
  124.            (if overwrite-mode
  125.                (progn
  126.                  (backward-char 1)
  127.                  (delete-char 1) )
  128.              (delete-backward-char 1)
  129.          (if (>= skk-henkan-end-point (point)) (skk-kakutei)) )))
  130.         ((and skk-henkan-on overwrite-mode)
  131.          (backward-char 1)
  132.          (delete-char 1) )
  133.         (t ad-do-it) )))
  134.  
  135. (skk-viper-advice-select
  136.  viper-intercept-ESC-key vip-intercept-ESC-key
  137.  (before skk-add activate)
  138.  ("$B"&%b!<%I!""'%b!<%I$@$C$?$i3NDj$9$k!#(B"
  139.   (and skk-mode skk-henkan-on (skk-kakutei)) ))
  140.  
  141. (skk-viper-advice-select
  142.  viper-join-lines vip-join-lines
  143.  (after skk-ad activate)
  144.  ("$B%9%Z!<%9$NN>B&$NJ8;z%;%C%H$,(B JISX0208 $B$@$C$?$i%9%Z!<%9$r<h$j=|$/!#(B"
  145.   (save-match-data
  146.     (and (skk-save-point
  147.       (skip-chars-backward " ")
  148.       (string-match "\\c|" (char-to-string (preceding-char))) )
  149.          (skk-save-point
  150.       (skip-chars-forward " ")
  151.       (string-match "\\c|" (char-to-string (following-char))) )
  152.          (delete-char 1) ))))
  153.  
  154. ;;(defadvice vip-insert (after skk-ad activate)
  155. ;;  "skk-mode $B$@$C$?$i$+$J%b!<%I$K$9$k!#(B"
  156. ;;  (if skk-mode (skk-j-mode-on)) )
  157.  
  158. ;;(defadvice vip-Insert (after skk-ad activate)
  159. ;;  "skk-mode $B$@$C$?$i$+$J%b!<%I$K$9$k!#(B"
  160. ;;  (if skk-mode (skk-j-mode-on)) )
  161.  
  162. ;;(defadvice vip-open-line (after skk-ad activate)
  163. ;;  "skk-mode $B$@$C$?$i$+$J%b!<%I$K$9$k!#(B"
  164. ;;  (if skk-mode (skk-j-mode-on)) )
  165.  
  166. ;;(defadvice vip-Open-line (after skk-ad activate)
  167. ;;  "skk-mode $B$@$C$?$i$+$J%b!<%I$K$9$k!#(B"
  168. ;;  (if skk-mode (skk-j-mode-on)) )
  169.  
  170. ;;(defadvice vip-append (after skk-ad activate)
  171. ;;  "skk-mode $B$@$C$?$i$+$J%b!<%I$K$9$k!#(B"
  172. ;;  (if skk-mode (skk-j-mode-on)) )
  173.  
  174. ;;(defadvice vip-Append (after skk-ad activate)
  175. ;;  "skk-mode $B$@$C$?$i$+$J%b!<%I$K$9$k!#(B"
  176. ;;  (if skk-mode (skk-j-mode-on)) )
  177.  
  178. ;;(defadvice vip-overwrite (after skk-ad activate)
  179. ;;  "skk-mode $B$@$C$?$i$+$J%b!<%I$K$9$k!#(B"
  180. ;;  (if skk-mode (skk-j-mode-on)) )
  181.  
  182. ;;;; $B$3$j$c%@%a$C$9$M!#(B
  183. ;;;;(defadvice vip-replace-char (after skk-ad activate)
  184. ;;;;  "skk-mode $B$@$C$?$i$+$J%b!<%I$K$9$k!#(B"
  185. ;;;;  (if skk-mode (skk-j-mode-on)) )
  186.  
  187. (provide 'skk-viper)
  188. ;;; skk-viper.el ends here
  189.